Advanced Filtering Techniques ব্যবহার করে Spark SQL-এ DataFrame বা টেবিল থেকে নির্দিষ্ট ডেটা নির্বাচন করা যায়। যখন ডেটাসেট বড় এবং জটিল হয়, তখন সঠিক এবং কার্যকরীভাবে ডেটা ফিল্টার করা খুবই গুরুত্বপূর্ণ। Spark SQL-এ বিভিন্ন উন্নত ফিল্টারিং কৌশল রয়েছে, যা ব্যবহার করে আপনি ডেটা আরও সূক্ষ্মভাবে নির্বাচন করতে পারবেন।
এখানে, আমরা Spark SQL-এ DataFrame এর জন্য Advanced Filtering Techniques আলোচনা করব, যেমন complex conditions, null value filtering, regular expressions, এবং filtering with multiple columns।
১. Complex Filtering with Multiple Conditions
Spark SQL-এ একাধিক শর্তের মাধ্যমে ফিল্টারিং করা সম্ভব, যেখানে AND এবং OR লজিক্যাল অপারেটর ব্যবহার করা হয়।
উদাহরণ:
from pyspark.sql import SparkSession
# SparkSession তৈরি
spark = SparkSession.builder.appName("Advanced Filtering Example").getOrCreate()
# উদাহরণ DataFrame তৈরি
data = [("Alice", 28, "HR", 2000),
("Bob", 35, "IT", 5000),
("Charlie", 40, "HR", 4000),
("David", 30, "IT", 4500),
("Eva", 32, "Finance", 5500)]
columns = ["Name", "Age", "Department", "Salary"]
df = spark.createDataFrame(data, columns)
# Complex filtering using AND and OR
filtered_df = df.filter((df["Age"] > 30) & (df["Department"] == "IT") | (df["Salary"] > 4500))
filtered_df.show()
এখানে, AND এবং OR অপারেটর ব্যবহার করে একটি complex condition তৈরি করা হয়েছে, যেখানে Age > 30 এবং Department == "IT" অথবা Salary > 4500 শর্ত পূরণ করলে রেকর্ড ফিরিয়ে আনা হবে।
২. Filtering with NULL Values
Spark SQL-এ NULL মানগুলির জন্য বিশেষভাবে ফিল্টারিং করা যায়। আপনি isNull() এবং isNotNull() মেথড ব্যবহার করে NULL এবং non-null মানের জন্য ফিল্টার করতে পারেন।
উদাহরণ:
# Filter rows where salary is NULL
df.filter(df["Salary"].isNull()).show()
# Filter rows where salary is NOT NULL
df.filter(df["Salary"].isNotNull()).show()
এখানে, প্রথম কোয়ারি এমন রেকর্ড ফিল্টার করবে যেগুলোর Salary কলামে NULL মান রয়েছে এবং দ্বিতীয় কোয়ারি ফিল্টার করবে যেখানে Salary কলামে কোনো NULL মান নেই।
৩. Filtering with Regular Expressions (Regex)
Spark SQL-এ regular expressions ব্যবহার করে টেক্সট ফিল্টারিং করা যায়। rlike() মেথড ব্যবহার করে আপনি একটি নির্দিষ্ট প্যাটার্নের সাথে মেলানো রেকর্ড নির্বাচন করতে পারেন।
উদাহরণ:
# Filtering using regular expression
df.filter(df["Name"].rlike("^A")).show() # Names starting with "A"
এখানে, ^A রেগুলার এক্সপ্রেশন ব্যবহার করে Name কলামের সমস্ত রেকর্ড ফিল্টার করা হচ্ছে যেগুলি "A" দিয়ে শুরু হয়।
৪. Filtering on Multiple Columns
Spark SQL-এ একাধিক কলামের ভিত্তিতে ফিল্টারিং করা অনেকটা সাধারণ, এবং এটি বিভিন্ন শর্তের ভিত্তিতে একসাথে কাজ করতে সক্ষম।
উদাহরণ:
# Filtering on multiple columns
df.filter((df["Age"] > 30) & (df["Department"] == "IT") & (df["Salary"] > 4000)).show()
এখানে, Age > 30, Department == "IT", এবং Salary > 4000 শর্তগুলো একসাথে ব্যবহার করা হয়েছে, এবং শুধুমাত্র সেই রেকর্ডগুলো ফিল্টার করা হয়েছে যা সমস্ত শর্ত পূরণ করে।
৫. Using SQL Expressions for Complex Filtering
Spark SQL-এ আপনি SQL কোয়ারি ব্যবহার করে DataFrame-এ আরও জটিল ফিল্টারিং করতে পারেন। SparkSession এর মাধ্যমে SQL কোয়ারি লিখে আপনি আরও সহজে এবং উচ্চতর কাস্টমাইজেশন সহ ফিল্টারিং করতে পারবেন।
উদাহরণ:
# Creating a temporary view for SQL queries
df.createOrReplaceTempView("employee_data")
# Using SQL query for filtering
result = spark.sql("SELECT * FROM employee_data WHERE Age > 30 AND Department = 'IT' AND Salary > 4500")
result.show()
এখানে, SQL কোয়ারি ব্যবহার করে Age, Department, এবং Salary কলামগুলি শর্তযুক্তভাবে ফিল্টার করা হয়েছে।
৬. Dynamic Filtering using User-Defined Conditions
Spark SQL-এ ডাইনামিক শর্তের মাধ্যমে DataFrame ফিল্টার করা যায়। আপনি একটি কাস্টম শর্ত তৈরি করে ফিল্টার করতে পারেন, যা ব্যবহারকারীর ইনপুট বা অন্য ডেটা সোর্স থেকে আসে।
উদাহরণ:
# Dynamic Filtering based on user input
age_filter = 30
salary_filter = 4500
df.filter((df["Age"] > age_filter) & (df["Salary"] > salary_filter)).show()
এখানে, age_filter এবং salary_filter ভেরিয়েবল দিয়ে শর্ত তৈরি করা হয়েছে, যা ব্যবহারকারী ইনপুট বা অন্য কোনো সূত্র থেকে আসতে পারে।
৭. Filtering with isin() for Multiple Values
isin() ফাংশন ব্যবহার করে আপনি একাধিক মানের জন্য ফিল্টারিং করতে পারেন, যা সাধারণত একটি নির্দিষ্ট সেটের মধ্যে থাকা ডেটা নির্বাচন করতে ব্যবহৃত হয়।
উদাহরণ:
# Filtering with isin for multiple values
df.filter(df["Department"].isin("HR", "IT")).show()
এখানে, isin() ব্যবহার করে শুধুমাত্র সেই রেকর্ডগুলো ফিল্টার করা হচ্ছে যেগুলির Department কলামের মান HR বা IT।
৮. Combining Filters with select()
Spark SQL-এ আপনি একাধিক ফিল্টার শর্ত এবং select() ব্যবহার করে DataFrame এর নির্দিষ্ট কলামগুলো নির্বাচন করতে পারেন। এটি নির্দিষ্ট ডেটা সংক্ষেপে এবং দ্রুত খুঁজে পেতে সাহায্য করে।
উদাহরণ:
# Combining filters with select
df.filter((df["Age"] > 30) & (df["Salary"] > 4000)) \
.select("Name", "Department", "Salary") \
.show()
এখানে, ফিল্টারিং এর পর শুধুমাত্র Name, Department, এবং Salary কলামগুলো নির্বাচন করা হয়েছে।
সারাংশ
Spark SQL-এ Advanced Filtering Techniques ব্যবহার করে আপনি সহজেই DataFrame বা SQL টেবিল থেকে জটিল শর্তে ডেটা ফিল্টার করতে পারেন। Complex conditions, NULL value filtering, regular expressions, এবং multiple columns filtering এর মাধ্যমে আপনি ডেটার উপর উচ্চতর কাস্টমাইজড শর্ত প্রয়োগ করতে পারেন। এছাড়া, SQL expressions, dynamic filtering, এবং isin() ব্যবহার করে ডেটা দ্রুত এবং কার্যকরীভাবে ফিল্টার করা সম্ভব। Spark SQL-এ এসব কৌশলগুলি ব্যবহার করে আপনি বড় ডেটাসেটের মধ্যে থেকে দ্রুত এবং দক্ষতার সাথে প্রয়োজনীয় ডেটা খুঁজে বের করতে পারবেন।
Read more